"""
容器类型公共运算符符
    概述：
        我们已经学过了五中容器类型，
            str    字符串    不可变
            list   列表      可变
            dict   字典      可变
            tuple  元组      不可变
            set    集合      可变

        我们接触过的运算符  或者 函数 有一些是可以作用到所有的容器上的，我们来总结一下

    公共的运算符
        +   表示 合并  可以作用于  字符串 ，列表  元组
        *   表示：复制 ，可以作用于 字符串，列表  元组
        in   表示  是否存在，可以作用于 字符串，列表，元组，字典，集合
        not in 表示 是否不存在，可以作用于 字符串 ，列表，元组，字典，集合
"""

# 1. 演示 + 表示 合并  可以作用于  字符串 ，列表  元组
print('aaa' + 'bbb' + 'aabb')
print(['1', '2', '3'] + ['A', 'B', 'C'] + ['A', '1'])
print(('aaa', 'AAA') + ('刘千琪', '任瑜阳') + ('刘千琪', 'AAA'))
# 不支持集合，因为集合元素具有唯一性，合并可能存在重复元素，然后会自动删除重复的，合并没有意义
# 不支持字典，因为字典的键具有唯一性，

print('=' * 30)
# 2. 演示 *   表示：复制 ，可以作用于 字符串，列表  元组
print('-' * 30)
print(['刘千琪', '崔龙腾'] * 30)
print(('AAA', 'aaa') * 30)
# 不支持集合，因为集合元素的唯一性
# 不支持字典，因为字典的键具有唯一性

print('=' * 30)
# 3. 演示 in   表示  是否存在，可以作用于 字符串，列表，元组，字典，集合
print('a' in 'abc')
print('a' in ['a','A','b'])
print('a' in ('a','A','b'))
print('a' in {'a','A','b'}) #  集合
# in 在字典中判断只能判断是否包含这个key,不能判断是否包含value
print('刘千琪' in {'name':'刘千琪','age':18}) # False
print('name' in {'name':'刘千琪','age':18}) # True


print('=' * 30)
# 4. 演示 not in   表示  是否不存在，可以作用于 字符串，列表，元组，字典，集合
print('a' not in 'abc')
print('a' not in ['a','A','b'])
print('a' not in ('a','A','b'))
print('a' not in {'a','A','b'}) #  集合
# in 在字典中判断只能判断是否包含这个key,不能判断是否包含value
print('刘千琪' not in {'name':'刘千琪','age':18}) # False
print('name' not in {'name':'刘千琪','age':18}) # True